package br.com.dbsti.construtortelas;

import javax.swing.JPanel;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;
import net.miginfocom.swing.MigLayout;

public abstract class EditorObjetos<Tipo> extends JPanel {
    
    protected Tipo valor; 
    
    public EditorObjetos() {
        super();
        this.setLayout(new MigLayout());
        this.addAncestorListener(new AncestorListener() {

            public void ancestorAdded(AncestorEvent event) {
                adicionarEditorPropriedades();
            }

            public void ancestorRemoved(AncestorEvent event) {
            }

            public void ancestorMoved(AncestorEvent event) {
            }
        });
    }
    
    public void set(Tipo valor){
        this.valor = valor;
        this.preencherCamposTela();
    }
    
    public Tipo get(){
        this.lerCamposTela();
        return this.valor;
    }

    protected abstract void preencherCamposTela();
    
    protected abstract void lerCamposTela();
    
    protected abstract void adicionarEditorPropriedades();
}
